package com.sugon.service;

import com.sugon.consts.FactoryTypeEnum;
import com.sugon.entity.FactoryTypeEntity;

import java.util.List;
import java.util.Map;

/**
 * 设备厂家Service接口
 *
 * @author sugon
 * @date 2020-03-06 10:13:55
 */
public interface FactoryTypeService extends IBaseService {

    /**
     * 根据主键查询实体
     *
     * @param id 主键
     * @return 实体
     */
    FactoryTypeEntity queryObject(String id);

    /**
     * 根据厂家标识或自编码查询厂家类别
     *
     * @param selfCode 厂家标识或自编码
     * @return 实体
     */
    FactoryTypeEntity queryBySelfCode(String selfCode);

    /**
     * 分页查询
     *
     * @param map 参数
     * @return list
     */
    List<FactoryTypeEntity> queryList(Map<String, Object> map);

    /**
     * 查询指定类型的供应商列表
     * 比如查询设备、模具和备件等
     *
     * @param factoryType 供应商类别  0设备 1备件 2模具
     * @return
     */
    List<FactoryTypeEntity> queryListByType(FactoryTypeEnum factoryType);

    /**
     * 准备导出数据
     *
     * @param map
     * @return
     */
    Map<String, Object> prepareExportData(Map<String, Object> map);

    /**
     * 分页统计总数
     *
     * @param map 参数
     * @return 总数
     */
    int queryTotal(Map<String, Object> map);

    /**
     * 保存实体
     *
     * @param factoryType 实体
     * @return 保存条数
     */
    int save(FactoryTypeEntity factoryType);

    /**
     * 根据主键更新实体
     *
     * @param factoryType 实体
     * @return 更新条数
     */
    int update(FactoryTypeEntity factoryType);

    /**
     * 根据主键删除
     *
     * @param id
     * @return 删除条数
     */
    int delete(String id);

    /**
     * 根据主键批量删除
     *
     * @param ids
     * @return 删除条数
     */
    int deleteBatch(String[] ids);

    /**
     * 获取所有厂家名称和编码键值对
     * KEY: 厂家名称
     * VALUE: 厂家编码
     *
     * @return
     */
    Map<String, String> listAll(Integer type);
}
